package com.edmendst.xmall.pojo;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ProductExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public ProductExample() {
        oredCriteria = new ArrayList<>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andProductIdIsNull() {
            addCriterion("product_id is null");
            return (Criteria) this;
        }

        public Criteria andProductIdIsNotNull() {
            addCriterion("product_id is not null");
            return (Criteria) this;
        }

        public Criteria andProductIdEqualTo(Integer value) {
            addCriterion("product_id =", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdNotEqualTo(Integer value) {
            addCriterion("product_id <>", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdGreaterThan(Integer value) {
            addCriterion("product_id >", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_id >=", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdLessThan(Integer value) {
            addCriterion("product_id <", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdLessThanOrEqualTo(Integer value) {
            addCriterion("product_id <=", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdIn(List<Integer> values) {
            addCriterion("product_id in", values, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdNotIn(List<Integer> values) {
            addCriterion("product_id not in", values, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdBetween(Integer value1, Integer value2) {
            addCriterion("product_id between", value1, value2, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdNotBetween(Integer value1, Integer value2) {
            addCriterion("product_id not between", value1, value2, "productId");
            return (Criteria) this;
        }

        public Criteria andProductNameIsNull() {
            addCriterion("product_name is null");
            return (Criteria) this;
        }

        public Criteria andProductNameIsNotNull() {
            addCriterion("product_name is not null");
            return (Criteria) this;
        }

        public Criteria andProductNameEqualTo(String value) {
            addCriterion("product_name =", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotEqualTo(String value) {
            addCriterion("product_name <>", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameGreaterThan(String value) {
            addCriterion("product_name >", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameGreaterThanOrEqualTo(String value) {
            addCriterion("product_name >=", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLessThan(String value) {
            addCriterion("product_name <", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLessThanOrEqualTo(String value) {
            addCriterion("product_name <=", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLike(String value) {
            addCriterion("product_name like", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotLike(String value) {
            addCriterion("product_name not like", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameIn(List<String> values) {
            addCriterion("product_name in", values, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotIn(List<String> values) {
            addCriterion("product_name not in", values, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameBetween(String value1, String value2) {
            addCriterion("product_name between", value1, value2, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotBetween(String value1, String value2) {
            addCriterion("product_name not between", value1, value2, "productName");
            return (Criteria) this;
        }

        public Criteria andProductPriceIsNull() {
            addCriterion("product_price is null");
            return (Criteria) this;
        }

        public Criteria andProductPriceIsNotNull() {
            addCriterion("product_price is not null");
            return (Criteria) this;
        }

        public Criteria andProductPriceEqualTo(BigDecimal value) {
            addCriterion("product_price =", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceNotEqualTo(BigDecimal value) {
            addCriterion("product_price <>", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceGreaterThan(BigDecimal value) {
            addCriterion("product_price >", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("product_price >=", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceLessThan(BigDecimal value) {
            addCriterion("product_price <", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("product_price <=", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceIn(List<BigDecimal> values) {
            addCriterion("product_price in", values, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceNotIn(List<BigDecimal> values) {
            addCriterion("product_price not in", values, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("product_price between", value1, value2, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("product_price not between", value1, value2, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductStockIsNull() {
            addCriterion("product_stock is null");
            return (Criteria) this;
        }

        public Criteria andProductStockIsNotNull() {
            addCriterion("product_stock is not null");
            return (Criteria) this;
        }

        public Criteria andProductStockEqualTo(Integer value) {
            addCriterion("product_stock =", value, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockNotEqualTo(Integer value) {
            addCriterion("product_stock <>", value, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockGreaterThan(Integer value) {
            addCriterion("product_stock >", value, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_stock >=", value, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockLessThan(Integer value) {
            addCriterion("product_stock <", value, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockLessThanOrEqualTo(Integer value) {
            addCriterion("product_stock <=", value, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockIn(List<Integer> values) {
            addCriterion("product_stock in", values, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockNotIn(List<Integer> values) {
            addCriterion("product_stock not in", values, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockBetween(Integer value1, Integer value2) {
            addCriterion("product_stock between", value1, value2, "productStock");
            return (Criteria) this;
        }

        public Criteria andProductStockNotBetween(Integer value1, Integer value2) {
            addCriterion("product_stock not between", value1, value2, "productStock");
            return (Criteria) this;
        }

        public Criteria andCategoryIdIsNull() {
            addCriterion("category_id is null");
            return (Criteria) this;
        }

        public Criteria andCategoryIdIsNotNull() {
            addCriterion("category_id is not null");
            return (Criteria) this;
        }

        public Criteria andCategoryIdEqualTo(Integer value) {
            addCriterion("category_id =", value, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdNotEqualTo(Integer value) {
            addCriterion("category_id <>", value, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdGreaterThan(Integer value) {
            addCriterion("category_id >", value, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("category_id >=", value, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdLessThan(Integer value) {
            addCriterion("category_id <", value, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdLessThanOrEqualTo(Integer value) {
            addCriterion("category_id <=", value, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdIn(List<Integer> values) {
            addCriterion("category_id in", values, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdNotIn(List<Integer> values) {
            addCriterion("category_id not in", values, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdBetween(Integer value1, Integer value2) {
            addCriterion("category_id between", value1, value2, "categoryId");
            return (Criteria) this;
        }

        public Criteria andCategoryIdNotBetween(Integer value1, Integer value2) {
            addCriterion("category_id not between", value1, value2, "categoryId");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineIsNull() {
            addCriterion("product_is_online is null");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineIsNotNull() {
            addCriterion("product_is_online is not null");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineEqualTo(Boolean value) {
            addCriterion("product_is_online =", value, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineNotEqualTo(Boolean value) {
            addCriterion("product_is_online <>", value, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineGreaterThan(Boolean value) {
            addCriterion("product_is_online >", value, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineGreaterThanOrEqualTo(Boolean value) {
            addCriterion("product_is_online >=", value, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineLessThan(Boolean value) {
            addCriterion("product_is_online <", value, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineLessThanOrEqualTo(Boolean value) {
            addCriterion("product_is_online <=", value, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineIn(List<Boolean> values) {
            addCriterion("product_is_online in", values, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineNotIn(List<Boolean> values) {
            addCriterion("product_is_online not in", values, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineBetween(Boolean value1, Boolean value2) {
            addCriterion("product_is_online between", value1, value2, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductIsOnlineNotBetween(Boolean value1, Boolean value2) {
            addCriterion("product_is_online not between", value1, value2, "productIsOnline");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusIsNull() {
            addCriterion("product_audit_status is null");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusIsNotNull() {
            addCriterion("product_audit_status is not null");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusEqualTo(Boolean value) {
            addCriterion("product_audit_status =", value, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusNotEqualTo(Boolean value) {
            addCriterion("product_audit_status <>", value, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusGreaterThan(Boolean value) {
            addCriterion("product_audit_status >", value, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusGreaterThanOrEqualTo(Boolean value) {
            addCriterion("product_audit_status >=", value, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusLessThan(Boolean value) {
            addCriterion("product_audit_status <", value, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusLessThanOrEqualTo(Boolean value) {
            addCriterion("product_audit_status <=", value, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusIn(List<Boolean> values) {
            addCriterion("product_audit_status in", values, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusNotIn(List<Boolean> values) {
            addCriterion("product_audit_status not in", values, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusBetween(Boolean value1, Boolean value2) {
            addCriterion("product_audit_status between", value1, value2, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductAuditStatusNotBetween(Boolean value1, Boolean value2) {
            addCriterion("product_audit_status not between", value1, value2, "productAuditStatus");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeIsNull() {
            addCriterion("product_create_time is null");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeIsNotNull() {
            addCriterion("product_create_time is not null");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeEqualTo(Date value) {
            addCriterion("product_create_time =", value, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeNotEqualTo(Date value) {
            addCriterion("product_create_time <>", value, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeGreaterThan(Date value) {
            addCriterion("product_create_time >", value, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("product_create_time >=", value, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeLessThan(Date value) {
            addCriterion("product_create_time <", value, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeLessThanOrEqualTo(Date value) {
            addCriterion("product_create_time <=", value, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeIn(List<Date> values) {
            addCriterion("product_create_time in", values, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeNotIn(List<Date> values) {
            addCriterion("product_create_time not in", values, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeBetween(Date value1, Date value2) {
            addCriterion("product_create_time between", value1, value2, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andProductCreateTimeNotBetween(Date value1, Date value2) {
            addCriterion("product_create_time not between", value1, value2, "productCreateTime");
            return (Criteria) this;
        }

        public Criteria andShopIdIsNull() {
            addCriterion("shop_id is null");
            return (Criteria) this;
        }

        public Criteria andShopIdIsNotNull() {
            addCriterion("shop_id is not null");
            return (Criteria) this;
        }

        public Criteria andShopIdEqualTo(Integer value) {
            addCriterion("shop_id =", value, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdNotEqualTo(Integer value) {
            addCriterion("shop_id <>", value, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdGreaterThan(Integer value) {
            addCriterion("shop_id >", value, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("shop_id >=", value, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdLessThan(Integer value) {
            addCriterion("shop_id <", value, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdLessThanOrEqualTo(Integer value) {
            addCriterion("shop_id <=", value, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdIn(List<Integer> values) {
            addCriterion("shop_id in", values, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdNotIn(List<Integer> values) {
            addCriterion("shop_id not in", values, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdBetween(Integer value1, Integer value2) {
            addCriterion("shop_id between", value1, value2, "shopId");
            return (Criteria) this;
        }

        public Criteria andShopIdNotBetween(Integer value1, Integer value2) {
            addCriterion("shop_id not between", value1, value2, "shopId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdIsNull() {
            addCriterion("audit_admin_id is null");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdIsNotNull() {
            addCriterion("audit_admin_id is not null");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdEqualTo(Integer value) {
            addCriterion("audit_admin_id =", value, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdNotEqualTo(Integer value) {
            addCriterion("audit_admin_id <>", value, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdGreaterThan(Integer value) {
            addCriterion("audit_admin_id >", value, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("audit_admin_id >=", value, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdLessThan(Integer value) {
            addCriterion("audit_admin_id <", value, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdLessThanOrEqualTo(Integer value) {
            addCriterion("audit_admin_id <=", value, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdIn(List<Integer> values) {
            addCriterion("audit_admin_id in", values, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdNotIn(List<Integer> values) {
            addCriterion("audit_admin_id not in", values, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdBetween(Integer value1, Integer value2) {
            addCriterion("audit_admin_id between", value1, value2, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditAdminIdNotBetween(Integer value1, Integer value2) {
            addCriterion("audit_admin_id not between", value1, value2, "auditAdminId");
            return (Criteria) this;
        }

        public Criteria andAuditTimeIsNull() {
            addCriterion("audit_time is null");
            return (Criteria) this;
        }

        public Criteria andAuditTimeIsNotNull() {
            addCriterion("audit_time is not null");
            return (Criteria) this;
        }

        public Criteria andAuditTimeEqualTo(Date value) {
            addCriterion("audit_time =", value, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeNotEqualTo(Date value) {
            addCriterion("audit_time <>", value, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeGreaterThan(Date value) {
            addCriterion("audit_time >", value, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("audit_time >=", value, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeLessThan(Date value) {
            addCriterion("audit_time <", value, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeLessThanOrEqualTo(Date value) {
            addCriterion("audit_time <=", value, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeIn(List<Date> values) {
            addCriterion("audit_time in", values, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeNotIn(List<Date> values) {
            addCriterion("audit_time not in", values, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeBetween(Date value1, Date value2) {
            addCriterion("audit_time between", value1, value2, "auditTime");
            return (Criteria) this;
        }

        public Criteria andAuditTimeNotBetween(Date value1, Date value2) {
            addCriterion("audit_time not between", value1, value2, "auditTime");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageIsNull() {
            addCriterion("product_cover_image is null");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageIsNotNull() {
            addCriterion("product_cover_image is not null");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageEqualTo(String value) {
            addCriterion("product_cover_image =", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageNotEqualTo(String value) {
            addCriterion("product_cover_image <>", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageGreaterThan(String value) {
            addCriterion("product_cover_image >", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageGreaterThanOrEqualTo(String value) {
            addCriterion("product_cover_image >=", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageLessThan(String value) {
            addCriterion("product_cover_image <", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageLessThanOrEqualTo(String value) {
            addCriterion("product_cover_image <=", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageLike(String value) {
            addCriterion("product_cover_image like", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageNotLike(String value) {
            addCriterion("product_cover_image not like", value, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageIn(List<String> values) {
            addCriterion("product_cover_image in", values, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageNotIn(List<String> values) {
            addCriterion("product_cover_image not in", values, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageBetween(String value1, String value2) {
            addCriterion("product_cover_image between", value1, value2, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductCoverImageNotBetween(String value1, String value2) {
            addCriterion("product_cover_image not between", value1, value2, "productCoverImage");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlIsNull() {
            addCriterion("product_video_url is null");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlIsNotNull() {
            addCriterion("product_video_url is not null");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlEqualTo(String value) {
            addCriterion("product_video_url =", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlNotEqualTo(String value) {
            addCriterion("product_video_url <>", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlGreaterThan(String value) {
            addCriterion("product_video_url >", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlGreaterThanOrEqualTo(String value) {
            addCriterion("product_video_url >=", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlLessThan(String value) {
            addCriterion("product_video_url <", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlLessThanOrEqualTo(String value) {
            addCriterion("product_video_url <=", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlLike(String value) {
            addCriterion("product_video_url like", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlNotLike(String value) {
            addCriterion("product_video_url not like", value, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlIn(List<String> values) {
            addCriterion("product_video_url in", values, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlNotIn(List<String> values) {
            addCriterion("product_video_url not in", values, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlBetween(String value1, String value2) {
            addCriterion("product_video_url between", value1, value2, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductVideoUrlNotBetween(String value1, String value2) {
            addCriterion("product_video_url not between", value1, value2, "productVideoUrl");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingIsNull() {
            addCriterion("product_avg_rating is null");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingIsNotNull() {
            addCriterion("product_avg_rating is not null");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingEqualTo(BigDecimal value) {
            addCriterion("product_avg_rating =", value, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingNotEqualTo(BigDecimal value) {
            addCriterion("product_avg_rating <>", value, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingGreaterThan(BigDecimal value) {
            addCriterion("product_avg_rating >", value, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("product_avg_rating >=", value, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingLessThan(BigDecimal value) {
            addCriterion("product_avg_rating <", value, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingLessThanOrEqualTo(BigDecimal value) {
            addCriterion("product_avg_rating <=", value, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingIn(List<BigDecimal> values) {
            addCriterion("product_avg_rating in", values, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingNotIn(List<BigDecimal> values) {
            addCriterion("product_avg_rating not in", values, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("product_avg_rating between", value1, value2, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductAvgRatingNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("product_avg_rating not between", value1, value2, "productAvgRating");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountIsNull() {
            addCriterion("product_review_count is null");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountIsNotNull() {
            addCriterion("product_review_count is not null");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountEqualTo(Integer value) {
            addCriterion("product_review_count =", value, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountNotEqualTo(Integer value) {
            addCriterion("product_review_count <>", value, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountGreaterThan(Integer value) {
            addCriterion("product_review_count >", value, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_review_count >=", value, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountLessThan(Integer value) {
            addCriterion("product_review_count <", value, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountLessThanOrEqualTo(Integer value) {
            addCriterion("product_review_count <=", value, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountIn(List<Integer> values) {
            addCriterion("product_review_count in", values, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountNotIn(List<Integer> values) {
            addCriterion("product_review_count not in", values, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountBetween(Integer value1, Integer value2) {
            addCriterion("product_review_count between", value1, value2, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductReviewCountNotBetween(Integer value1, Integer value2) {
            addCriterion("product_review_count not between", value1, value2, "productReviewCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountIsNull() {
            addCriterion("product_sold_count is null");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountIsNotNull() {
            addCriterion("product_sold_count is not null");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountEqualTo(Integer value) {
            addCriterion("product_sold_count =", value, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountNotEqualTo(Integer value) {
            addCriterion("product_sold_count <>", value, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountGreaterThan(Integer value) {
            addCriterion("product_sold_count >", value, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_sold_count >=", value, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountLessThan(Integer value) {
            addCriterion("product_sold_count <", value, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountLessThanOrEqualTo(Integer value) {
            addCriterion("product_sold_count <=", value, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountIn(List<Integer> values) {
            addCriterion("product_sold_count in", values, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountNotIn(List<Integer> values) {
            addCriterion("product_sold_count not in", values, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountBetween(Integer value1, Integer value2) {
            addCriterion("product_sold_count between", value1, value2, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductSoldCountNotBetween(Integer value1, Integer value2) {
            addCriterion("product_sold_count not between", value1, value2, "productSoldCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountIsNull() {
            addCriterion("product_positive_count is null");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountIsNotNull() {
            addCriterion("product_positive_count is not null");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountEqualTo(Integer value) {
            addCriterion("product_positive_count =", value, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountNotEqualTo(Integer value) {
            addCriterion("product_positive_count <>", value, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountGreaterThan(Integer value) {
            addCriterion("product_positive_count >", value, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_positive_count >=", value, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountLessThan(Integer value) {
            addCriterion("product_positive_count <", value, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountLessThanOrEqualTo(Integer value) {
            addCriterion("product_positive_count <=", value, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountIn(List<Integer> values) {
            addCriterion("product_positive_count in", values, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountNotIn(List<Integer> values) {
            addCriterion("product_positive_count not in", values, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountBetween(Integer value1, Integer value2) {
            addCriterion("product_positive_count between", value1, value2, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductPositiveCountNotBetween(Integer value1, Integer value2) {
            addCriterion("product_positive_count not between", value1, value2, "productPositiveCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountIsNull() {
            addCriterion("product_neutral_count is null");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountIsNotNull() {
            addCriterion("product_neutral_count is not null");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountEqualTo(Integer value) {
            addCriterion("product_neutral_count =", value, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountNotEqualTo(Integer value) {
            addCriterion("product_neutral_count <>", value, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountGreaterThan(Integer value) {
            addCriterion("product_neutral_count >", value, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_neutral_count >=", value, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountLessThan(Integer value) {
            addCriterion("product_neutral_count <", value, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountLessThanOrEqualTo(Integer value) {
            addCriterion("product_neutral_count <=", value, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountIn(List<Integer> values) {
            addCriterion("product_neutral_count in", values, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountNotIn(List<Integer> values) {
            addCriterion("product_neutral_count not in", values, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountBetween(Integer value1, Integer value2) {
            addCriterion("product_neutral_count between", value1, value2, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNeutralCountNotBetween(Integer value1, Integer value2) {
            addCriterion("product_neutral_count not between", value1, value2, "productNeutralCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountIsNull() {
            addCriterion("product_negative_count is null");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountIsNotNull() {
            addCriterion("product_negative_count is not null");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountEqualTo(Integer value) {
            addCriterion("product_negative_count =", value, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountNotEqualTo(Integer value) {
            addCriterion("product_negative_count <>", value, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountGreaterThan(Integer value) {
            addCriterion("product_negative_count >", value, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_negative_count >=", value, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountLessThan(Integer value) {
            addCriterion("product_negative_count <", value, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountLessThanOrEqualTo(Integer value) {
            addCriterion("product_negative_count <=", value, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountIn(List<Integer> values) {
            addCriterion("product_negative_count in", values, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountNotIn(List<Integer> values) {
            addCriterion("product_negative_count not in", values, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountBetween(Integer value1, Integer value2) {
            addCriterion("product_negative_count between", value1, value2, "productNegativeCount");
            return (Criteria) this;
        }

        public Criteria andProductNegativeCountNotBetween(Integer value1, Integer value2) {
            addCriterion("product_negative_count not between", value1, value2, "productNegativeCount");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {
        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}